/**
 * STM1.c
 *
 *  il test serve per controllare che le funzioni per calcolare le gaussiane funzionino correttamente
 *
 *  Created on: May 24, 2013
 *      Author: koldar
 */

#include <stdio.h>
#include <stdlib.h>
#include "stm.h"

#define T 39
#define Q 65

int main(){

	PvectorParam x=initVectorParam(38,43);
	PvectorParam a=initVectorParam(T,Q);

	initSTMEngine(T,Q);
	printVectorParam(stdout,computeDifference(x,a));
	printf("\n");
	printf("controllo che le variabili in stm-math-tools siano state inizializzate correttamente\n");
	printf("matrice covarianze:\n");
	printf("%f\t%f\n",stmCovariance[0][0],stmCovariance[0][1]);
	printf("%f\t%f\n",stmCovariance[1][0],stmCovariance[1][1]);
	printf("detemrinante della matrice delle coviaraizne\n");
	printf("%f\n",stmCovarianceDet);
	printf("matrice inversa della matrice di covarianza\n");
	printf("%f\t%f\n",stmCovarianceInv[0][0],stmCovarianceInv[0][1]);
	printf("%f\t%f\n",stmCovarianceInv[1][0],stmCovarianceInv[1][1]);
	printf("fattore amplificativo della gaussiana:\n");
	printf("%f\n",stmGaussianAmplifier);
	printf("base dell'esponenziale:\n");
	printf("%f\n",stmGaussianLogBase);
	printf("computo l'espoenente\n");
	printf("%.15f\n",computeExponent(computeDifference(x,a)));
	printf("computo la gaussiana in ");
	printVectorParam(stdout,computeDifference(x,a));
	printf(":\n");
	printf("%.15f\n",computeGaussian(computeDifference(x,a)));

	printf("libero le risorse allocate\n");
	freeVectorParam(x);
	freeVectorParam(a);

	printf("controlle che le abbiamo pulite davvero\n");
	printVectorParam(stdout,x);
	printf("\n");
	printf("FINE.\n");
}
